﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using vudu.EnlaceDatos.SqlServer;
using vudu.Logica.Clases;

namespace vudu.PaginasWeb.G9PracticaMateria
{
    public partial class AgregarSalonP : System.Web.UI.Page
    {
        #region Atributos clase AgregarSalonP.aspx.cs
        protected Salon salonL =new Salon();
        protected Salon salonM = new Salon();
        protected Salon salonMI = new Salon();
        protected Salon salonJ = new Salon();
        protected Salon salonV = new Salon();
        private SqlServerPractica sqlServerPractica = new SqlServerPractica();
        private Profesor profesorPractica = new Profesor();
        private Practica practicaAgregar = new Practica();
        private List<HorarioDeClase> horario;
        int idEscuela;
        #endregion

        protected void Page_Load(object sender, EventArgs e)
        {
            string miRol = (string)Session["rol"];
            if (miRol != "Escuela")
                Response.Redirect("../G9PracticaMateria/AgregarPractica.aspx");

            if (!Page.IsPostBack)
            {
                Escuela miEscuela = (Escuela)Session["Usuario"];
                idEscuela = miEscuela.IdEscuela;
                Label1.Text = "Escuela: " + miEscuela.NombreEscuela;
                profesorPractica = sqlServerPractica.ConsultarProfesorIndividual(Convert.ToInt32(AgregarPractica.profesorPractica));
                SeccionPractica.Text = AgregarPractica.seccionPractica;
                //SeccionPractica.ReadOnly=true;
                Profesor.Text = profesorPractica.Nombre + " " + profesorPractica.Apellido;
               // Profesor.ReadOnly = true;
                Practica.Text = AgregarPractica.nombrePractica;
                //Practica.ReadOnly = true;
                LlenarSalones();
            }
            
        }

       
        // llena los salones para los dias elegidos
        public void LlenarSalones()
        {
            // Creamos un nuevo registro para la tabla

           

            if (AgregarPractica.salonesDisponiblesL != null)
            {
                for (int j = 0; j < AgregarPractica.salonesDisponiblesL.Count; j++)
                {
                    ListItem registroList = new ListItem();
                    registroList.Text = AgregarPractica.salonesDisponiblesL[j].Nombre + " " + AgregarPractica.salonesDisponiblesL[j].Tipo ;
                    registroList.Value = AgregarPractica.salonesDisponiblesL[j].NumeroSalon + "";

                    salonesDisponiblesL.Items.Add(registroList);

                }

               

            }
           

            if (AgregarPractica.salonesDisponiblesM != null)
            {
                for (int j = 0; j < AgregarPractica.salonesDisponiblesM.Count; j++)
                {
                    ListItem registroList = new ListItem();
                    registroList.Text = AgregarPractica.salonesDisponiblesM[j].Nombre + " " + AgregarPractica.salonesDisponiblesM[j].Tipo;
                    registroList.Value = AgregarPractica.salonesDisponiblesM[j].NumeroSalon + "";
                    salonesDisponiblesM.Items.Add(registroList);

                }
               
            }
          

            if (AgregarPractica.salonesDisponiblesMI != null)
            {
                for (int j = 0; j < AgregarPractica.salonesDisponiblesMI.Count; j++)
                {
                    ListItem registroList = new ListItem();
                    registroList.Text = AgregarPractica.salonesDisponiblesMI[j].Nombre + " " + AgregarPractica.salonesDisponiblesMI[j].Tipo;
                    registroList.Value = AgregarPractica.salonesDisponiblesMI[j].NumeroSalon + "";
                    salonesDisponiblesMI.Items.Add(registroList);
                }
               
            }
           

            if (AgregarPractica.salonesDisponiblesJ != null)
            {
                for (int j = 0; j < AgregarPractica.salonesDisponiblesJ.Count; j++)
                {
                    ListItem registroList = new ListItem();
                    registroList.Text = AgregarPractica.salonesDisponiblesJ[j].Nombre + " " + AgregarPractica.salonesDisponiblesJ[j].Tipo;
                    registroList.Value = AgregarPractica.salonesDisponiblesJ[j].NumeroSalon + "";
                    salonesDisponiblesJ.Items.Add(registroList);
                }
                

            }
            

            if (AgregarPractica.salonesDisponiblesV != null)
            {
                for (int j = 0; j < AgregarPractica.salonesDisponiblesV.Count; j++)
                {
                    ListItem registroList = new ListItem();
                    registroList.Text = AgregarPractica.salonesDisponiblesV[j].Nombre + " " + AgregarPractica.salonesDisponiblesV[j].Tipo;
                    registroList.Value = AgregarPractica.salonesDisponiblesV[j].NumeroSalon + "";
                    salonesDisponiblesV.Items.Add(registroList);
                }
                
            }
          
        }
        //valida que se eligio un salon para el dia
        public List<int> ValidarSalonL(int i, List<int> salondia, int contdiatrue, int contdiasalon)
        {
            List<int> retorno = new List<int>();
            if (salondia[i] == 1 && i == 0)
            {
                contdiatrue=contdiatrue + 1;
                
                if (salonesDisponiblesL.SelectedValue != "00")
                {
                    contdiasalon = contdiasalon + 1;
                    salonL.NumeroSalon = Convert.ToInt32(salonesDisponiblesL.SelectedValue);
                }
                else {
                    salonesDisponiblesL.BackColor = System.Drawing.Color.Red; 
                }
            }
            retorno.Add(contdiatrue);
            retorno.Add(contdiasalon);


            return retorno;
        }
        //valida que se eligio un salon para el dia
        public List<int> ValidarSalonM(int i, List<int> salondia, int contdiatrue, int contdiasalon)
        {
            List<int> retorno = new List<int>();
            if (salondia[i] == 1 && i == 1)
            {
                contdiatrue=contdiatrue + 1;
                if (salonesDisponiblesM.SelectedValue != "00")
                {
                    contdiasalon=contdiasalon + 1;
                    salonM.NumeroSalon = Convert.ToInt32(salonesDisponiblesM.SelectedValue);
                }
                else
                { salonesDisponiblesM.BackColor = System.Drawing.Color.Red; 
                }
            }
            retorno.Add(contdiatrue);
            retorno.Add(contdiasalon);

            return retorno;
        }
        //valida que se eligio un salon para el dia
        public List<int> ValidarSalonMi(int i, List<int> salondia, int contdiatrue, int contdiasalon)
        {
            List<int> retorno = new List<int>();
            if (salondia[i] == 1 && i == 2)
            {
               contdiatrue=contdiatrue + 1;
                if (salonesDisponiblesMI.SelectedValue != "00")
                {
                    contdiasalon=contdiasalon + 1;
                    salonMI.NumeroSalon = Convert.ToInt32(salonesDisponiblesMI.SelectedValue);
                }
                else
                {
                    
                    salonesDisponiblesMI.BackColor = System.Drawing.Color.Red; 
                }
            }
            retorno.Add(contdiatrue);
            retorno.Add(contdiasalon);
            return retorno;
        }
        //valida que se eligio un salon para el dia
        public List<int> ValidarSalonJ(int i, List<int> salondia, int contdiatrue, int contdiasalon)
        {
            List<int> retorno = new List<int>();
            if (salondia[i] == 1 && i == 3)
            {
                contdiatrue=contdiatrue + 1;
                if (salonesDisponiblesJ.SelectedValue != "00")
                {
                    contdiasalon=contdiasalon + 1;
                    salonJ.NumeroSalon = Convert.ToInt32(salonesDisponiblesJ.SelectedValue);
                }
                else
                {
                   salonesDisponiblesJ.BackColor = System.Drawing.Color.Red; 
                }
            }
            retorno.Add(contdiatrue);
            retorno.Add(contdiasalon);

            return retorno;
        }
        //valida que se eligio un salon para el dia
        public List<int> ValidarSalonV(int i, List<int> salondia, int contdiatrue, int contdiasalon)
        {
            List<int> retorno = new List<int>();
            if (salondia[i] == 1 && i == 4)
            {
                contdiatrue=contdiatrue + 1;
                if (salonesDisponiblesV.SelectedValue != "00")
                {
                    contdiasalon=contdiasalon + 1;
                    salonV.NumeroSalon = Convert.ToInt32(salonesDisponiblesV.SelectedValue);
                }
                else
                {
                 salonesDisponiblesV.BackColor = System.Drawing.Color.Red; 
                }
            }
            retorno.Add(contdiatrue);
            retorno.Add(contdiasalon);

            return retorno;
        }
        //valida que se eligio un salon para el dia
        public bool ValidarSalones()
        {
            List<int> salondia = new List<int>();
            List<int> validacion = new List<int>();
            int contdiatrue=0;
            int contdiasalon=0;
            if (AgregarPractica.salonesDisponiblesL.Count!=0)
            {
                salondia.Add(1);
            }
            else { salondia.Add(0); }
            if (AgregarPractica.salonesDisponiblesM.Count != 0)
            {
                salondia.Add(1);
            }
            else { salondia.Add(0); }
            if (AgregarPractica.salonesDisponiblesMI.Count != 0)
            {
                salondia.Add(1);
            }
            else { salondia.Add(0); }
            if (AgregarPractica.salonesDisponiblesJ.Count != 0)
            {
                salondia.Add(1);
            }
            else { salondia.Add(0); }
            if (AgregarPractica.salonesDisponiblesV.Count != 0)
            {
                salondia.Add(1);
            }
            else { salondia.Add(0); }
            
            for (int i = 0; i < salondia.Count; i++)
            {
                validacion=ValidarSalonL(i, salondia, contdiatrue, contdiasalon);
                contdiatrue = validacion[0];
                contdiasalon = validacion[1];
                validacion = ValidarSalonM(i, salondia, contdiatrue, contdiasalon);
                contdiatrue = validacion[0];
                contdiasalon = validacion[1];
                validacion = ValidarSalonMi(i, salondia, contdiatrue, contdiasalon);
                contdiatrue = validacion[0];
                contdiasalon = validacion[1];
                validacion = ValidarSalonJ(i, salondia, contdiatrue, contdiasalon);
                contdiatrue = validacion[0];
                contdiasalon = validacion[1];
                validacion = ValidarSalonV(i, salondia, contdiatrue, contdiasalon);
                contdiatrue = validacion[0];
                contdiasalon = validacion[1];
            }

            if (contdiasalon == contdiatrue)
            { return true; }
            else { return false; }
        }
        //
        public List<HorarioDeClase> LlenarHorario()
        {
            
            horario = new List<HorarioDeClase>();
            if (AgregarPractica.horaL.Count != 0)
            {
                HorarioDeClase hora = new HorarioDeClase();
                hora.HoraInicio = DateTime.Parse(AgregarPractica.horaL[0]);
                hora.HoraFin = DateTime.Parse(AgregarPractica.horaL[1]);
                hora.Dia = "Lunes";
                horario.Add(hora);
               
            }
            if (AgregarPractica.horaM.Count != 0)
            {
                HorarioDeClase hora = new HorarioDeClase();
                hora.HoraInicio = DateTime.Parse(AgregarPractica.horaM[0]);
                hora.HoraFin = DateTime.Parse(AgregarPractica.horaM[1]);
                hora.Dia = "Martes";
                horario.Add(hora);
            }
            if (AgregarPractica.horaMI.Count != 0)
            {
                HorarioDeClase hora = new HorarioDeClase();
                hora.HoraInicio = DateTime.Parse(AgregarPractica.horaMI[0]);
                hora.HoraFin = DateTime.Parse(AgregarPractica.horaMI[1]);
                hora.Dia = "Miercoles";
                horario.Add(hora);
            }
            if (AgregarPractica.horaJ.Count != 0)
            {
                HorarioDeClase hora = new HorarioDeClase();
                hora.HoraInicio = DateTime.Parse(AgregarPractica.horaJ[0]);
                hora.HoraFin = DateTime.Parse(AgregarPractica.horaJ[1]);
                hora.Dia = "Jueves";
                horario.Add(hora);
            }
            if (AgregarPractica.horaV.Count != 0)
            {
                HorarioDeClase hora = new HorarioDeClase();
                hora.HoraInicio = DateTime.Parse(AgregarPractica.horaV[0]);
                hora.HoraFin = DateTime.Parse(AgregarPractica.horaV[1]);
                hora.Dia = "Viernes";
                horario.Add(hora);

            }

            return horario;
           


        }

        public List<Salon> llenarListaSalones()
        {
            List<Salon> salones = new List<Salon>();

            if (salonL.NumeroSalon != 0)
            {
                salones.Add(salonL);
            }
            if (salonM.NumeroSalon != 0)
            {
                salones.Add(salonM);
            }
            if (salonMI.NumeroSalon != 0)
            {
                salones.Add(salonMI);
            }
            if (salonJ.NumeroSalon != 0)
            {
                salones.Add(salonJ);
            }
            if (salonV.NumeroSalon != 0)
            {
                salones.Add(salonV);
            }
            return salones;

        }

        protected void Button2_Click(object sender, EventArgs e)
        {

           

            if (ValidarSalones() == true)
            {
                     
                practicaAgregar.NombrePractica=AgregarPractica.nombrePractica;
                practicaAgregar.NumeroSeccion= Convert.ToInt32(AgregarPractica.seccionPractica);
                practicaAgregar.profesor = new Profesor();
                practicaAgregar.profesor.Cedula=Convert.ToInt32(AgregarPractica.profesorPractica);
                practicaAgregar.CrearPractica(practicaAgregar, Convert.ToInt32(AgregarPractica.seccionTeoria), LlenarHorario(), llenarListaSalones());
                Response.Redirect("../Home/HomeEscuela.aspx");
            }
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            

            Response.Redirect("../G9PracticaMateria/AgregarPractica.aspx");
        }
    }
}